{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1a3d44e3",
   "metadata": {},
   "source": [
    "## 策略梯度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "16ff1515",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:17:38.561493Z",
     "start_time": "2024-05-11T07:17:38.555988Z"
    }
   },
   "outputs": [],
   "source": [
    "import gym\n",
    "import numpy as np\n",
    "from IPython import display\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "2e51a3ef",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:17:38.833863Z",
     "start_time": "2024-05-11T07:17:38.826762Z"
    }
   },
   "outputs": [],
   "source": [
    "class GymHelper:\n",
    "    def __init__(self,env,figsize=(3,3)):\n",
    "        self.env=env\n",
    "        self.figsize=figsize\n",
    "        plt.figure(figsize=figsize)\n",
    "        self.img=plt.imshow(env.render())\n",
    "    def render(self,title=None):\n",
    "        img_data=self.env.render()\n",
    "        self.img.set_data(img_data)\n",
    "        display.display(plt.gcf())\n",
    "        display.clear_output(wait=True)\n",
    "        if title:\n",
    "            plt.title(title)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "90a89619",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T08:05:10.740168Z",
     "start_time": "2024-05-11T08:04:10.652909Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 300x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "env=gym.make(\"Acrobot-v1\",render_mode=\"rgb_array\")\n",
    "env.reset()\n",
    "gym_helper=GymHelper(env)\n",
    "i=0\n",
    "while True:\n",
    "    gym_helper.render(title=str(i))\n",
    "    action=env.action_space.sample()\n",
    "    observation,reward,terminated,truncated,info=env.step(action)\n",
    "    done=terminated or truncated\n",
    "    i+=1\n",
    "    if done:\n",
    "        break\n",
    "gym_helper.render(\"finished\")\n",
    "env.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "452fd8de",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T08:05:26.180035Z",
     "start_time": "2024-05-11T08:05:26.175504Z"
    }
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torch.nn.functional as F\n",
    "from tqdm import *\n",
    "import collections\n",
    "import time\n",
    "import random\n",
    "import sys\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4de5f196",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:18:03.131783Z",
     "start_time": "2024-05-11T07:18:03.123273Z"
    }
   },
   "outputs": [],
   "source": [
    "class Net(nn.Module):\n",
    "    def __init__(self,input_dim,output_dim):\n",
    "        super(Net,self).__init__()\n",
    "        self.input_dim=input_dim\n",
    "        self.output_dim=output_dim\n",
    "        self.fc=nn.Sequential(\n",
    "            nn.Linear(self.input_dim,64),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(64,128),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(128,self.output_dim)\n",
    "        )\n",
    "        #dueling networks\n",
    "    def forward(self,state):\n",
    "        action_prob=torch.sigmoid(self.fc(state))\n",
    "        return action_prob"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8047e4d7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:18:03.740006Z",
     "start_time": "2024-05-11T07:18:03.727466Z"
    }
   },
   "outputs": [],
   "source": [
    "class PGM:\n",
    "    def __init__(self,env,lr=0.001,gamma=0.99,buffer_size=10000,T=10):\n",
    "        self.env=env\n",
    "        self.lr=lr\n",
    "        self.gamma=gamma\n",
    "        #判断可用设备是CPU与GPU\n",
    "        self.device=torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
    "        #定义策略网络\n",
    "        self.policy_model=Net(env.observation_space.shape[0],1).to(self.device)\n",
    "        self.optimizer=torch.optim.Adam(self.policy_model.parameters(),lr=lr)\n",
    "    def choose_action(self,state):\n",
    "        #将状态转化为tensor输入模型\n",
    "        state=torch.FloatTensor(np.array([state])).to(self.device)\n",
    "        probs=self.policy_model(state.to(self.device))\n",
    "        #生成分布后采样返回动作\n",
    "        m=torch.distributions.Bernoulli(probs)\n",
    "        action=int(m.sample().item())\n",
    "        return action\n",
    "    def update(self,batch):\n",
    "        states,actions,rewards,next_states,dones=zip(*batch)\n",
    "        states,actions,rewards=list(states),list(actions),list(rewards)\n",
    "        running_reward=0\n",
    "        #对奖励进行修正,考虑未来,并加入衰减因子\n",
    "        for i in reversed(range(len(rewards))):\n",
    "            if rewards[i]==0:\n",
    "                running_reward=0\n",
    "            else:\n",
    "                running_reward=running_reward*self.gamma+rewards[i]\n",
    "                rewards[i]=running_reward\n",
    "        reward_mean=np.mean(rewards) #求奖励均值\n",
    "        reward_std=np.std(rewards)#求奖励标准差\n",
    "        #对奖励进行标准化\n",
    "        for i in range(len(rewards)):\n",
    "            rewards[i]=(rewards[i]-reward_mean)/reward_std\n",
    "        self.optimizer.zero_grad()\n",
    "        loss=0\n",
    "        for i in range(len(rewards)):\n",
    "            state=states[i]\n",
    "            action=torch.FloatTensor([actions[i]])\n",
    "            reward=rewards[i]\n",
    "            state=torch.FloatTensor([state]).to(self.device)\n",
    "            action_prob=self.policy_model(state)\n",
    "            c=torch.distributions.Bernoulli(action_prob)\n",
    "            loss=-c.log_prob(action.to(self.device))*reward\n",
    "            loss.backward()\n",
    "        self.optimizer.step()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e9d158c4",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:23:13.141802Z",
     "start_time": "2024-05-11T07:19:10.291672Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|▎                                                                                 | 2/500 [00:00<00:32, 15.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode0:14.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  8%|██████▊                                                                          | 42/500 [00:03<00:30, 15.18it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode40:11.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 16%|█████████████▎                                                                   | 82/500 [00:07<00:43,  9.50it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode80:40.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 24%|███████████████████▌                                                            | 122/500 [00:11<00:43,  8.59it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode120:15.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 32%|█████████████████████████▊                                                      | 161/500 [00:20<01:48,  3.13it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode160:139.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 40%|████████████████████████████████▏                                               | 201/500 [00:36<01:54,  2.62it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode200:73.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 48%|██████████████████████████████████████▌                                         | 241/500 [00:57<02:06,  2.04it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode240:152.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 56%|████████████████████████████████████████████▉                                   | 281/500 [01:20<01:38,  2.21it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode280:134.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 64%|███████████████████████████████████████████████████▎                            | 321/500 [01:47<02:20,  1.27it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode320:200.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 72%|█████████████████████████████████████████████████████████▊                      | 361/500 [02:17<01:26,  1.61it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode360:113.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 80%|████████████████████████████████████████████████████████████████▏               | 401/500 [02:46<01:18,  1.26it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode400:200.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 88%|██████████████████████████████████████████████████████████████████████▌         | 441/500 [03:17<00:44,  1.32it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode440:200.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 96%|████████████████████████████████████████████████████████████████████████████▉   | 481/500 [03:48<00:15,  1.23it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Episode480:200.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████| 500/500 [04:02<00:00,  2.06it/s]\n"
     ]
    }
   ],
   "source": [
    "max_episodes=500\n",
    "max_steps=200\n",
    "#batch_size=32\n",
    "\n",
    "agent=PGM(env)\n",
    "eps_rewards=[]\n",
    "\n",
    "for episode in tqdm(range(max_episodes)):\n",
    "    state,_=env.reset()\n",
    "    eps_reward=0\n",
    "    buffer=[]\n",
    "    for step in range(max_steps):\n",
    "        action=agent.choose_action(state)\n",
    "        next_state,reward,terminated,truncated,info=env.step(action)\n",
    "        done=terminated or truncated\n",
    "        buffer.append((state,action,reward,next_state,done))\n",
    "        eps_reward+=reward\n",
    "#         if len(agent.replay_buffer)>batch_size:\n",
    "#             agent.update(batch_size)\n",
    "        state=next_state\n",
    "        if done:\n",
    "            break\n",
    "    agent.update(buffer)\n",
    "    eps_rewards.append(eps_reward)\n",
    "    if episode % 40==0:\n",
    "        tqdm.write(\"Episode\"+str(episode)+\":\"+str(eps_reward))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bbd390bb",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:24:08.967176Z",
     "start_time": "2024-05-11T07:24:08.794879Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1883c0fa5f0>]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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13Xdu+++262qqnJ/+tOfuq+++qr71a9+1a2vr3ffeeedwR7akOKBBx5wv/nNb7q//vWvXQDub37zG27/9ddf7zY0NLi//vWv3XXr1rkXXHCBO2nSJLejo8Nv86Uvfck94IAD3JUrV7rPP/+8u2jRInfOnDluNpsd4KupTE477TT3tttuc19++WV37dq17umnn+5OmTLF7erq8tvQfY6H3/3ud+7999/vrl+/3l2/fr37jW98w62qqnJffvll13XpPpeDZ5991p02bZp7+OGHu1/96lf97XSvS+faa691DzvsMHfr1q3+T3t7u7+/0u4xGSj9HHXUUe6XvvQlbtuhhx7qfv3rXx+kEQ19RAMln8+7LS0t7vXXX+9v6+npcRsbG90f/ehHruu67p49e9yqqir37rvv9tu8++67biKRcP/4xz8O2NiHEu3t7S4Ad9WqVa7r0n0uN2PHjnX/67/+i+5zGejs7HRnzpzprly50j3ppJN8A4XudTxce+217pw5c6T7KvEeU4gHQG9vL9asWYPFixdz2xcvXoynnnpqkEY1/Ni4cSO2bdvG3ed0Oo2TTjrJv89r1qxBX18f16a1tRWzZs2iz0LB3r17AQDjxo0DQPe5XORyOdx9993Yt28fjj32WLrPZeDyyy/H6aefjlNPPZXbTvc6PjZs2IDW1lZMnz4dF154Id566y0AlXmPB3Utnkph586dyOVyaG5u5rY3Nzdj27ZtgzSq4Yd3L2X3+Z133vHbVFdXY+zYsYE29FkEcV0XS5cuxQknnIBZs2YBoPscN+vWrcOxxx6Lnp4ejBo1Cr/5zW/wwQ9+0P9CpvscD3fffTeef/55rF69OrCP/qbj4eijj8YvfvELHHzwwdi+fTu+/e1v47jjjsMrr7xSkfeYDBQGx3G4967rBrYRpRPlPtNnIeeKK67ASy+9hCeeeCKwj+5zPBxyyCFYu3Yt9uzZg1//+te45JJLsGrVKn8/3efS2bx5M7761a/ioYceQk1NjbId3evSWLJkif969uzZOPbYY3HQQQfh9ttvxzHHHAOgsu4xhXgANDU1IZlMBizA9vb2gDVJRMdTi+vuc0tLC3p7e7F7925lG6LAlVdeid/97nd49NFHMXnyZH873ed4qa6uxowZM7BgwQKsWLECc+bMwQ9+8AO6zzGyZs0atLe3Y/78+UilUkilUli1ahX+8z//E6lUyr9XdK/jpb6+HrNnz8aGDRsq8u+ZDBQUvoDmz5+PlStXcttXrlyJ4447bpBGNfyYPn06WlpauPvc29uLVatW+fd5/vz5qKqq4tps3boVL7/8Mn0W/biuiyuuuAL33nsvHnnkEUyfPp3bT/e5vLiui0wmQ/c5Rk455RSsW7cOa9eu9X8WLFiAiy++GGvXrsWBBx5I97oMZDIZvPbaa5g0aVJl/j3HLrsdonhpxrfeeqv76quvuldddZVbX1/vvv3224M9tCFFZ2en+8ILL7gvvPCCC8D93ve+577wwgt+uvb111/vNjY2uvfee6+7bt0695Of/KQ0jW3y5Mnuww8/7D7//PPuySefTKmCDH/7t3/rNjY2uo899hiXLrh//36/Dd3neFi2bJn7+OOPuxs3bnRfeukl9xvf+IabSCTchx56yHVdus/lhM3icV2613Fw9dVXu4899pj71ltvuc8884x7xhlnuA0NDf48V2n3mAwUhh/+8Ifu1KlT3erqanfevHl+2iZhz6OPPuoCCPxccsklrusWUtmuvfZat6WlxU2n0+6JJ57orlu3juuju7vbveKKK9xx48a5tbW17hlnnOFu2rRpEK6mMpHdXwDubbfd5reh+xwPn/3sZ/3vhAkTJrinnHKKb5y4Lt3nciIaKHSvS8era1JVVeW2tra65557rvvKK6/4+yvtHjuu67rx+2UIgiAIgiCiQxoUgiAIgiAqDjJQCIIgCIKoOMhAIQiCIAii4iADhSAIgiCIioMMFIIgCIIgKg4yUAiCIAiCqDjIQCEIgiAIouIgA4UgCIIgiIqDDBSCIAiCICoOMlAIgiAIgqg4yEAhCIIgCKLiIAOFIAiCIIiK4/8DiEQtn56AdEcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(eps_rewards)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "1b8fc867",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-05-11T07:35:33.223561Z",
     "start_time": "2024-05-11T07:35:20.570426Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 300x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "observation,_=env.reset()\n",
    "gym_helper=GymHelper(env,figsize=(3,3))\n",
    "agent=PGM(env)\n",
    "for i in range(20):\n",
    "    gym_helper.render(title=str(i))\n",
    "    action=agent.choose_action(observation)\n",
    "    observation,reward,terminated,truncated,info=env.step(action)\n",
    "    done=terminated or truncated\n",
    "    time.sleep(0.5)\n",
    "    if done:\n",
    "        break\n",
    "gym_helper.render(title=\"finished\")\n",
    "env.close()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
